package cn.wolfcode.luowowo.website.util;

import cn.wolfcode.luowowo.common.util.RedisKey;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * cookie的工具类
 */
public class CookieUtil {
    //添加cookie
    public static void saveCookie(String name, String value,
                                  int time, HttpServletResponse response){
        //5. 得到token变量, 创建cookie对象, 将token变量名和token的值(UUID)设置在cookie中
        //并设置cookie的有效时间为30分钟, 以及共享路径(不要忘记)
        //再通过response对象将cookie传到浏览器中缓存
        Cookie cookie = new Cookie(name, value);
        //设置有效时间
        cookie.setMaxAge(time);
        //设置共享路径
        cookie.setPath("/");
        response.addCookie(cookie);
    }

    //获取token
    public static String getToken(HttpServletRequest request, HttpServletResponse response){
        //6. 用户再发请求会携带有key为token的cookie对象
        //注意 : 不止一个cookie, 所以需要遍历
        Cookie[] cookies = request.getCookies();

        //7. 遍历所有coolie, 找到name为token的cookie对象
        //并通过这个cookie对象的value作为key查询Redis数据库的登录用户对象
        String token = null;
        if (cookies != null && cookies.length > 0){
            for (Cookie c : cookies) {
                if ("token".equals(c.getName())){
                    token = c.getValue();
                    c.setPath("/");
                    c.setMaxAge(RedisKey.USER_LOGIN_TOKEN.getTime().intValue());
                    response.addCookie(c);
                    break;
                }
            }
        }
        return token;
    }
}
